$data.Entity.extend('Statistique', {
	id: { type: 'int', key: true,computed: true },	
	id_stat: { type: 'number',required: true },	
	note:{type: 'string',required: true },
	date:{type:'string',required: true },
	qcm_id: { type: 'int',required: true},
	utilisateur_id: { type: 'int',required: true} 
});

function getStatistiquesNonSynchroByUser(BD,id){
	return BD.Statistiques.filter('it.utilisateur_id == '+id+' && it.id_stat == -1').toArray();
}

function getValueStatistiques(BD,champs,valeur){
	return BD.Statistiques.filter('it.'+champs+' == '+valeur).toArray();
}

function getStatistiquesByUser(BD_Utilisateurs,BD_Themes,id){
	
	return $.when(BD_Utilisateurs.Statistiques.filter('it.utilisateur_id == '+id).orderBy("it.qcm_id").orderBy("it.date").toArray())
	.then(function(tabStats){
			
		var old_id = -1;
		var tabTemp = [];
		var tabRetour = [];
		
		tabStats.forEach(function(stat){
			
			if((stat.qcm_id != old_id) && (old_id != -1)){
				
				var meilleurNote = -1;
				var tabNote = [];
				tabTemp.forEach(function(temp){
					var d = new Date();
					d.setTime(temp.date);
					var jour = d.getDate();
					if(jour < 10){
						jour = '0'+jour;
					}
					var mois = d.getMonth()+1;
					if(mois < 10){
						mois = '0'+mois;
					}
					var dateFormat = jour+'/'+mois+'/'+d.getFullYear();
					tabNote.push({note:temp.note,date:temp.date,date_format:dateFormat});				
					if(eval(meilleurNote) < eval(temp.note)){
						meilleurNote = temp.note;
					}
					
				});
			
				tabRetour.push(
					$.when(getValueQcms(BD_Themes,'id',old_id))
					.then(function(qcm){
						qcm = qcm[0];
						qcm.liste_notes = tabNote;
						qcm.meilleur_note = meilleurNote;					
						return qcm;
					})
				);
				
				old_id = stat.qcm_id;
				tabTemp = [];
			}
			else if(old_id == -1){
				old_id = stat.qcm_id;
			}
			
			tabTemp.push(stat);
			
		});
		
		if(tabTemp.length > 0){
		
			var stat = tabTemp[0];
			var meilleurNote = -1;
			var tabNote = [];
			tabTemp.forEach(function(temp){
				var d = new Date();
				d.setTime(temp.date);
				var jour = d.getDate();
				if(jour < 10){
					jour = '0'+jour;
				}
				var mois = d.getMonth()+1;
				if(mois < 10){
					mois = '0'+mois;
				}
				var dateFormat = jour+'/'+mois+'/'+d.getFullYear();
				tabNote.push({note:temp.note,date:temp.date,date_format:dateFormat});				
				if(eval(meilleurNote) < eval(temp.note)){
					meilleurNote = temp.note;
				}
				
			});
			
			tabRetour.push(
				$.when(getValueQcms(BD_Themes,'id',stat.qcm_id))
				.then(function(qcm){
					qcm = qcm[0];
					qcm.liste_notes = tabNote;
					qcm.meilleur_note = meilleurNote;					
					return qcm;
				})
			);
		}
		
		return $.when.apply($, tabRetour).then(function(){
			return arguments;
		});
		
	});
}

function getNbStatistiquesByUserAndDate(BD,id){

	var lastYear = new Date();
	lastYear.setFullYear(lastYear.getFullYear() -1);
	
	return $.when(BD.Statistiques.filter('it.utilisateur_id == '+id+' && it.date > '+lastYear.getTime()).orderBy("it.date").toArray())
	.then(function(tabStats){

		var tabRetour = [];	
		for(i=0;i<12;i++){
			tabRetour[i] = 0;
		}	

		var cptMois = 0;
		var old_mois = -1;
		var date = '';

		tabStats.forEach(function(stat){
			
			date = new Date();
			date.setTime(stat.date);

			if((date.getMonth() != old_mois) && (old_mois != -1)){
				tabRetour[old_mois] = cptMois;
				cptMois = 0;
				old_mois = date.getMonth();

			}else if(old_mois == -1){
				old_mois = date.getMonth();
			}

			cptMois ++;
		});

		if(cptMois > 0){			
			tabRetour[old_mois] = cptMois;
		}

		return tabRetour;
	});
}